package lyx.math.geometry
{
	import flash.geom.Matrix;
	import flash.geom.Point;
	
	/**
	 * 平面几何类
	 */
	public class PanelGeometry
	{
		/**
		 * 对坐标系中的点以坐标系中的另外一个点为原点进行以弧度为单位的顺时针旋转。
		 * @param angle 需要旋转的弧度
		 * @param point_o 需要进行旋转的点
		 * @param center_point 作为旋转参照的原点
		 * @return 
		 * 
		 */		
		static public function rotatePoint(angle:Number,point_o:Point,center_point:Point):Point
		{
			var matrix:Matrix = new Matrix();
			//对matrix进行旋转
			matrix.rotate(angle);
			//返回旋转后的中心点位置
			var point:Point = matrix.transformPoint(center_point);
			//将中心点平移回去原来的位置（因为ActionScript以左上角为旋转原点）
			matrix.translate(center_point.x-point.x,center_point.y-point.y);
			//对point_o进行旋转处理
			point = matrix.transformPoint(point_o);
			return point;
		}
		
		/**
		 * 构造一个Matrix，该Matrix是已经以center_point为原点进行过顺时针旋转angle弧度单位的Matrix。
		 * @param angle 旋转的弧度
		 * @param center_point 作为参照的原点
		 * @return 
		 * 
		 */		
		static public function createRotateMatrix(angle:Number,center_point:Point):Matrix
		{
			var matrix:Matrix = new Matrix();
			matrix.rotate(angle);
			//返回旋转后的中心点位置
			var point:Point = matrix.transformPoint(center_point);
			//将中心点平移回去原来的位置（因为ActionScript以左上角为旋转原点）
			matrix.translate(center_point.x-point.x,center_point.y-point.y);
			return matrix;
		}
	}
}